from permiso import Permiso, db_session
from sqlalchemy import exc
from flask import flash
from rol import Rol
session = db_session()

class PermisoManager(object):
    """Clase encargada del manejo de permisos"""
    def __init__(self):
        pass
    def __repr__(self):
        return '<Permiso Manager>'
        
    def getPermiso(self, idpermiso):
        """
        Metodo encargado de retornar un permiso de la base de datos
        @param idpermiso: id del permiso que se desea obtener.
        """
        permiso = session.query(Permiso).filter(Permiso.idpermiso == idpermiso).first()
        return permiso
    
    def getPermisoPorCodigo(self, codigo):
        """
        Metodo encargado de retornar un permiso de la base de datos
        @param codigo: codigo del permiso que se desea obtener.
        """
        permiso = session.query(Permiso).filter(Permiso.codigo == codigo).first()
        return permiso
    
    def getPermisos(self):
        """Metodo encargado de retornar los permisos de la base de datos"""
        permisos = session.query(Permiso)
        return permisos
    
    def getPermisosNo(self, idrol):
        """
        Metodo encargado de retornar los permisos que no coinciden con el usuario dado
        @param idrol: id del rol cuyos permisos se desean obtener.
        """
        permisos = session.query(Permiso)-(session.query(Rol).filter(Rol.idrol == idrol).first()).permisos
        return permisos
    